package com.mjsoftking.aopapp.aop.aspect;

import com.mjsoftking.aopapp.aop.anno.CheckAuth;
import com.mjsoftking.aopapp.aop.anno.ClickHook;
import com.mjsoftking.aopapp.aop.anno.RequestLog;

import org.aspectj.lang.annotation.Pointcut;

/**
 * 切入点定义，同级切入点引用时可以直接写相对的位置，不需要全包名
 */
public class BaseAspect {

    /** 作用在所有类上 */
    @Pointcut("execution(* com.mjsoftking.aopapp..*.*(..))")
    public void allFun(){
    }

    /** 作用在系统点击事件类上 */
    @Pointcut("execution(* android.view.View.OnClickListener.onClick(..))")
    public void onClick(){
    }

    /** 作用在含有 RequestLog注解的方法上 */
    @Pointcut("allFun() && @annotation(requestLog)")
    public void requestLogAnnotation(RequestLog requestLog){
    }

    /** 作用在含有 CheckAuth注解的方法上 */
    @Pointcut("allFun() && @annotation(checkAuth)")
    public void checkAuthAnnotation(CheckAuth checkAuth){
    }

    /** 作用在含有 ClickHook 注解的方法上 */
    @Pointcut("onClick() && @annotation(clickHook)")
    public void clickHookAnnotation(ClickHook clickHook){
    }

}
